package edu.xmut.yuepai.sys.service.impl;

import cn.hutool.core.collection.ListUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import edu.xmut.yuepai.common.utils.UserContext;
import edu.xmut.yuepai.model.entity.SysTags;
import edu.xmut.yuepai.sys.mapper.SysTagsMapper;
import edu.xmut.yuepai.sys.service.SysTagsService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author shuofeng
 * @description 针对表【sys_tags(标签表)】的数据库操作Service实现
 * @createDate 2024-09-26 16:12:55
 */
@Service
public class SysTagsServiceImpl extends ServiceImpl<SysTagsMapper, SysTags>
        implements SysTagsService {

    @Override
    public List<SysTags> searchAndAdd(String content) {
        // 查询是否包含内容的相关标签
        List<SysTags> list = this.lambdaQuery()
                .select(SysTags::getId, SysTags::getContent)
                .likeRight(SysTags::getContent, content)
                .list();
        // 如果里面不包括任何内容就直接添加到标签库中
        if (list.isEmpty()) {
            Long userId = UserContext.getUserId();
            SysTags sysTags = new SysTags();
            // 使用时间戳作为ID
            sysTags.setId(System.currentTimeMillis());
            sysTags.setContent(content);
            sysTags.setCreator(userId);
            this.save(sysTags);
            return ListUtil.toLinkedList(sysTags);
        }
        // 可能包含在里面，也有可能不包括
        long count = list.stream()
                .filter(item -> item.getContent().equals(content))
                .count();
        // 如果不存在，那就插入一个
        if (count == 0) {
            Long userId = UserContext.getUserId();
            SysTags sysTags = new SysTags();
            // 使用时间戳作为ID
            sysTags.setId(System.currentTimeMillis());
            sysTags.setContent(content);
            sysTags.setCreator(userId);
            this.save(sysTags);
            list.add(0, sysTags);
        }
        return list;
    }
}




